import fs from 'fs'
/*******
 * @description: 创建目录
 * @author: 琴时
 * @param {*} absPath [目录路径]
 * @param {*} callback  [回调函数]
 */
export const mkdirPath = (absPath, callback) => {
  fs.stat(absPath, (error, stats) => {
    if (!stats) {
      // 如果目录不存在则创建(支持递归创建 recursive: true)
      fs.mkdir(absPath, { recursive: true }, error => {
        if (error) {
          callback && callback(false, error.message)
          return
        }
        callback && callback(true, 'SUCCESS')
      })
    } else {
      if (stats.isFile()) {
        callback && callback(false, '该目录下存在同名文件，无法创建')
        return
      }
      callback && callback(true, 'SUCCESS')
      // console.log('文件创建的时间:', stats.birthtime.toLocaleString())
      // console.log('文件最后一次访问时间:', stats.atime.toLocaleString())
      // console.log('文件最后一次修改时间:', stats.mtime.toLocaleString())
    }
  })
}
/*******
 * @description: 删除路径文件或目录
 * @author: 琴时
 * @param {*} filesPath [文件路径]
 * @param {*} callback  [回调函数]
 */

export const delPath = (filesPath, callback) => {
  fs.stat(filesPath, (error, stats) => {
    if (error) {
      callback && callback(false, '文件或目录不存在')
      console.log('stat-error:', error)
      return
    }
    if (stats.isFile()) {
      // 删除文件
      fs.unlink(filesPath, error => {
        if (error) return
        console.log(`文件：${filesPath} 删除成功！`)
        callback && callback(true, `文件：${filesPath} 删除成功！`)
      })
    } else if (stats.isDirectory()) {
      // 删除目录
      fs.rmdir(filesPath, err => {
        if (err) {
          console.log('rmdir-error:', error)
          callback && callback(false, '非空目录无法删除')
          return
        }
        console.log(`目录：${filesPath} 删除成功！`)
        callback && callback(true, `目录：${filesPath} 删除成功！`)
      })
    }
  })
}

/*******
 * @description: 重命名或移动文件\目录[路径不一致时则是移动文件]
 * @author: 琴时
 * @param {*} oldPath   [旧路径]
 * @param {*} newPath   [新路径] [存在则替换]
 * @param {*} callback  [回调函数]
 * @return {*}
 */
export const renameFile = (oldPath, newPath, callback) => {
  fs.rename(oldPath, newPath, error => {
    if (error) {
      console.log('rename-error：', error)
      callback && callback(false, '文件或目录不存在')
      return
    }
    callback && callback(true, 'SUCCESS')
  })
}
